package unq_ui.tp_robots_web_wicket;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;

import robots.domain.MejoraDeRobot;
import robots.excepcions.DineroInsuficienteException;
import robots.models.JugadorAppModel;
import robots.models.MejoraRobotAppModel;
import unq_ui.tp_robots_web_wicket.tools.BotonVolver;
import unq_ui.tp_robots_web_wicket.tools.LinkVolver;

public class MejorarPage extends WebPage {
	private static final long serialVersionUID = 1L;
	
	final private Idioma idioma;
	private MejoraRobotAppModel modelMejora;
	private JugadorAppModel modelAnterior;
	final private FeedbackPanel feedback = new FeedbackPanel("feedback");
	
	public MejorarPage(JugadorAppModel modelAnterior, MejoraRobotAppModel modelMejora, Idioma idioma){
		this.idioma = idioma; 
		this.modelMejora= modelMejora;
		this.modelAnterior= modelAnterior;
        feedback.setOutputMarkupId(true);
        add(feedback);
		this.agregarLabels();
		this.listarMejoras();
		new LinkVolver("volver", this , new MainPage(modelAnterior, idioma));
	}

	private void listarMejoras() {
		this.add(new PropertyListView<MejoraDeRobot>("mejoras", this.modelMejora.getMejorasDisponibles()) {
			private static final long serialVersionUID = 2842728511977397584L;

			@Override
			protected void populateItem(ListItem<MejoraDeRobot> item) {		
				final MejoraDeRobot mejoraSeleccionada = item.getModelObject();
				item.add(new Label("descripcion", mejoraSeleccionada.getTipoDeMejora()));
				item.add(new Label("precio", mejoraSeleccionada.getPrecio().toString()));
				item.add(new Label("puntosDePoder", mejoraSeleccionada.getPuntos().toString()));
				
				item.add(new AjaxLink<MejoraDeRobot>("seleccionar"){
					private static final long serialVersionUID = 2508210048618214009L;

					public void onClick(AjaxRequestTarget target){
						try {
							modelMejora.mejorarRobot(mejoraSeleccionada);
							this.setResponsePage(new MainPage(modelAnterior, idioma));
						} catch (DineroInsuficienteException e) {
							error(idioma.dineroInsuficiente_7);
							target.add(feedback);
						}
					};
				}
				);
			}
		});
	}

	private void agregarLabels() {
		this.add(new Label("nombreJugador", this.modelAnterior.getJugador().getNombre()));
		this.add(new Label("dineroJugador",((Integer)this.modelAnterior.getJugador().getDinero()).toString()));
		this.add(new Label("nombreRobot", "Mejorar Robot: " + this.modelMejora.getRobot().getNombre()));
		this.add(new Label("poderRobot", "Poder: " + (Integer) this.modelMejora.getRobot().getPoderTotal()));	
		this.add(new Label("textoVolver",idioma.textoVolver_5));
	}

}
